<?php
include('includes/defines.php');
include('includes/header.php');
include('includes/validaciones.php');
include('includes/dates_handling.php');
include('includes/login.php');

function set_js($string){
	echo '<script src="scripts/'.$string.'.js" type="text/javascript"></script>';
}

function fks_alt_row(){
	global $fks_alt_row;
	if($fks_alt_row) echo ' class="fks-alt-row"';
	$fks_alt_row=!$fks_alt_row;
}
function fks_row(){
	global $fks_alt_row;
	if($fks_alt_row) echo ' class="fks-alt-row"';
}

function fks_msg_handler($nu_mensaje){
	switch ($nu_mensaje){
		case CONEXION_ERROR:
			echo "No se pudo conectar con la base de datos<br>";break;
		case CONEXION_ERROR_DB_SELECT:
			echo "La conexi&oacute;n a la base de datos no pudo ser realizada<br>";break;
		case QUERY_ERROR:
			echo "No se pudo realizar la consulta<br />"; break;
		case BUSCAR_CLIENTE_VACIO:
			echo "No se encontraron clientes con el criterio de b&uacute;squeda seleccionado<br>"; break;
		case BUSCAR_SIN_CRITERIO:
			echo "No ingres&oacute; un criterio de b&uacute;squeda v&aacute;lido<br>"; break;
		case VAL_NOMBRE:
			echo "Debe seleccionar el cliente<br>"; break;
		case VAL_APELLIDO:
			echo "Debe seleccionar el cliente<br>"; break;
		case VAL_LONGITUD_LINEA:
			echo "La longitud de la l&iacute;nea ingresada no es correcta (10 d&iacute;gitos)<br>"; break;
		case VAL_PRESTADORA:
			echo "Debe seleccionar la Empresa Prestadora a la cual se derivar&aacute; el reclamo del cliente<br>"; break;
		case VAL_OBS_INGRESO:
			echo "Las observaciones de ingreso del reclamo deben tener una longitud m&iacute;nima de 25 caracteres<br>"; break;
		case VAL_ADJUNTO1:
			echo "Debe seleccionar el tipo de adjunto (#1) adem&aacute;s de la descripci&oacute;n<br>"; break;
		case VAL_ADJUNTO2:
			echo "Debe seleccionar el tipo de adjunto (#2) adem&aacute;s de la descripci&oacute;n<br>"; break;
		case VAL_ADJUNTO3:
			echo "Debe seleccionar el tipo de adjunto (#3) adem&aacute;s de la descripci&oacute;n<br>"; break;
		case VAL_MOTIVO:
			echo "Debe seleccionar el grupo de motivo y motivo del reclamo del cliente<br>"; break;
		case SIZE_ADJUNTO1:
			echo "El tama&ntilde;o del adjunto (#1) supera el tama&ntilde;o permitido (".MAX_FILE_SIZE.")<br>"; break;
		case SIZE_ADJUNTO2:
			echo "El tama&ntilde;o del adjunto (#2) supera el tama&ntilde;o permitido (".MAX_FILE_SIZE.")<br>"; break;
		case SIZE_ADJUNTO3:
			echo "El tama&ntilde;o del adjunto (#3) supera el tama&ntilde;o permitido (".MAX_FILE_SIZE.")<br>"; break;
		case TYPE_ADJUNTO1:
			echo "El tipo de archivo del adjunto (#1) no se encuentra dentro de los permitidos (".EXTENSIONES_PERMITIDAS.")<br>"; break;
		case TYPE_ADJUNTO2:
			echo "El tipo de archivo del adjunto (#2) no se encuentra dentro de los permitidos (".EXTENSIONES_PERMITIDAS.")<br>"; break;
		case TYPE_ADJUNTO3:
			echo "El tipo de archivo del adjunto (#3) no se encuentra dentro de los permitidos (".EXTENSIONES_PERMITIDAS.")<br>"; break;
		case ALTA_OK:
			echo "El alta del registro se realiz&oacute; con &eacute;xito en la base de datos<br>"; break;
		case ALTA_ERROR:
			echo "El alta del registro no pudo ser realizada en la base de datos<br>"; break;
		case BAJA_OK:
			echo "La baja del registro se realiz&oacute; con &eacute;xito en la base de datos<br>"; break;
		case BAJA_ERROR: 
			echo "La baja del registro no pudo ser realizada en la base de datos<br>"; break;
		case MODIFICACION_OK: 
			echo "La modificaci&oacute;n del registro se realiz&oacute; con &eacute;xito en la base de datos<br>"; break;
		case MODIFICACION_ERROR:
			echo "La modificaci&oacute;n solicitada no pudo ser realizada en la base de datos<br>"; break;
		/* MENSAJES PARA EL LOGIN */
		case LOGIN_USR_OK:
			echo "Bienvenido al Sistema de Gesti&oacute;n de Reclamos de Telecomunicaciones<br>"; break;
		case LOGIN_USR_PSW: 
			echo "La contrase&ntilde;a ingresada es incorrecta. Por favor intente nuevamente<br>"; break;
		case LOGIN_USR_NO_EXISTE:
			echo "El usuario ingresado no es v&aacute;lido. Por favor intente nuevamente<br>"; break;
		case LOGIN_USR_BLOQUEO: 
			echo "El usuario se encuentra bloqueado. Ha superado la cantidad de accesos denegados permitidos (".MAX_ACCESOS_DENEGADOS."). Contacte al administrador del sistema<br>"; 
		case RESET_RTA_INCORRECTA:
			echo "La respuesta ingresada a la pregunta de reseteo es incorrecta. Por favor intente nuevamente<br>"; break;
		case RESET_OK:
			echo "La contrase&ntilde;a ha sido reseteada con &eacute;to y la misma fue remitida a su correo electr&oacute;nico<br>"; break;
		case VAL_ORGANIZACION:
			echo "Debe seleccionar la Organizaci&oacute;n a la cual pertenece el usuario que desea dar de alta<br>"; break;
		case VAL_FC_NAC:
			echo "No ingres&oacute; la fecha de nacimiento del usuario<br>"; break;
		case VAL_FC_NAC_INVALIDA:
			echo "La fecha de nacimiento ingresada es inv&aacute;lida<br>"; break;
		case VAL_EMAIL:
			echo "La direcci&oacute;n de correo electr&oacute;nico ingresada es inv&aacute;lida<br>"; break;
		case VAL_EMAIL_VACIA:
			echo "Debe ingresar la direcci&oacute;n de correo electr&oacute;nico del usuario a dar de alta<br>"; break;
		case VAL_NOMBRE_VACIO:
			echo "Debe ingresar el nombre del usuario a dar de alta<br>"; break;
		case VAL_APELLIDO_VACIO:
			echo "Debe ingresar el apellido del usuario a dar de alta<br>"; break;
		case VAL_NU_DOCUMENTO:
			echo "El n&uacute;mero de documento ingresado es inv&aacute;lido<br>"; break;
		case VAL_TIPO_DOC:
			echo "No seleccion&oacute; el tipo de documento correspondiente<br>"; break;
		case VAL_PERFIL:
			echo "Debe seleccionar el perfil deseado para el usuario que desea dar de alta<br>"; break;
		case ALTA_RECLAMO_OK:
			echo "El reclamo ha sido generado con &eacute;xito. El n&uacute;mero del mismo es el: "; break;
		/* MENSAJES TABLERO DE CONTROL*/
		case TABLERO_VAL_FC_ING:
			echo "La fecha de ingreso hasta debe ser mayor o igual que la fecha de ingreso desde<br>"; break;
		case TABLERO_VAL_FC_CIE:
			echo "La fecha de cierre hasta debe ser mayor o igual que la fecha de cierre desde<br>"; break;
		case TABLERO_VAL_FC_ING_CIE:
			echo "La fecha de cierre hasta no puede ser menor a la fecha de ingreso desde<br>"; break;
		case TABLERO_SIN_RESULTADOS:
			echo "La consulta que realiz&oacute; no devolvi&oacute; resultados<br>"; break;
		/* MENSAJES BANDEJAS */
		case BANDEJA_ENTE_VACIA:
			echo "No existen reclamos pendientes de validaci&oacute;n actualmente<br>"; break;
		case BANDEJA_EMPRESA_VACIA:
			echo "No existen reclamos pendientes de asignaci&oacute;n actualmente<br>"; break;
		case BANDEJA_USUARIO_ENTE_VACIA:
			echo "No posee reclamos pendientes de validaci&oacute;n actualmente<br>"; break;
		case BANDEJA_USUARIO_VACIA:
			echo "No posee reclamos pendientes de an&aacute;lisis actualmente<br>;"; break;
		case BANDEJA_SUPERVISOR_VACIA:
			echo "No posee reclamos pendientes de supervisi&oacute;n actualmente<br>"; break;
		case BANDEJA_RECLAMO_ASIGNADO:
			echo "El reclamo fue asignado con &eacute;xito<br>"; break;
		case BANDEJA_RECLAMO_APROBADO:
			echo "La respuesta del reclamo fue aprobada con &eacute;xito<br>"; break;
		case BANDEJA_RECLAMO_RECHAZADO:
			echo "La respuesta del reclamo fue recazada con &eacute;xito<br>"; break;
		case BANDEJA_RECLAMO_RESPONDIDO:
			echo "La respuesta fue guardada exitosamente<br>"; break;
		case BANDEJA_RECLAMO_VALIDADO:
			echo "El reclamo fue validado exitosamente<br>"; break;
		case BANDEJA_NUEVA_INSTANCIA:
			echo "La instancia fue generada con &eacute;xito<br>"; break;
		case USUARIO_SIN_ACCESO:
			echo "Usuario no posee acceso a esta p&aacute;gina<br>"; break;
		case BANDEJA_RECL_SIN_ADJUNTOS:
			echo "El reclamo no posee archivos adjuntos actualmente<br>"; break;
		case BANDEJA_RECLAMO_NO_ASIGNADO:
			echo "El reclamo no ha podido ser asignador<br>"; break;
		case VAL_PRODUCTO_TIPO:
			echo "No seleccion&oacute; el tipo de producto para la l&iacute;nea telef&oacute;nica ingresada<br>"; break;
		case BANDEJA_FALTA_MOTIVO_CIERRE:
			echo "Debe selecionar el motivo de cierre / resoluci&oacute;n relacionado con la respuesta<br>"; break;
		case BANDEJA_INSTANCIA_SIN_RESP:
			echo "La instancia no posee respuestas asociadadas actualmente<br>"; break;
		case BANDEJA_RTA_ERROR_UPLOAD:
			echo "No se pudo realizar el upload de los adjuntos de la respuesta<br>"; break;
		case BANDEJA_RECLAMO_NUEVA_INSTANCIA_OK:
			echo "Se ha generado una nueva instancia en el reclamo<br>"; break;
		case BANDEJA_RECLAMO_NUEVA_INSTANCIA_ERROR:
			echo "No se ha podido generar la instancia en el reclamo, por favor int&eacute;ntelo nuevamente<br>"; break;
		case BANDEJA_RESP_SIN_ADJUNTOS:
			echo "La respuesta no posee archivos adjuntos actualmente<br>"; break;
		default: 
			echo "error desconocido. contacte al administrador de la web<br>";break;
		}
}

function fks_recupero_var_sesiones (&$p_s_usuario, &$p_s_usuario_tipo, &$p_s_usuario_razonsocial, &$p_s_usuario_nya, &$p_s_cd_perfil,&$p_s_entidad, &$p_s_empresa_razonsocial, &$p_s_tx_perfil) {
     //obtengo los valores de las variables de sesion
     $p_s_usuario = $_SESSION["usuario"];
     $p_s_usuario_tipo = $_SESSION["usuario_tipo"];
     $p_s_usuario_razonsocial = $_SESSION["usuario_razonsocial"];
     $p_s_usuario_nya = $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellido"];
     $p_s_cd_perfil = $_SESSION["usuario_perfil"];
	 $p_s_entidad = $_SESSION["empresa"];
	 $p_s_empresa_razonsocial = $_SESSION["empresa_razonsocial"];
	 switch ($p_s_cd_perfil) {
						case 1:
							$p_s_tx_perfil = ENTE_ANALISTA;
							break;
						case 2:
							$p_s_tx_perfil= PRESTADORA_ANALISTA;
							break;
						case 3:
							$p_s_tx_perfil= ENTE_ADMIN;
							break;
						case 4:
							$p_s_tx_perfil= PRESTADORA_SUPERVISOR;
							break;
						case 5:
							$p_s_tx_perfil= CLIENTE;
							break;
						}
     }
	 
function fks_imprimo_var_sesiones($p_s_usuario, $p_s_usuario_tipo, $p_s_usuario_razonsocial, $p_s_usuario_nya, $p_s_cd_perfil, $p_s_entidad, $p_s_empresa_razonsocial,$p_s_tx_perfil) {
	 echo "Usuario entidad: ".$p_s_usuario."<br>";
     echo "Usuario: ".$p_s_usuario_tipo."<br>";
     echo "Usuario Razon Social: ".$p_s_usuario_razonsocial."<br>";
     echo "Usuario Nombre y Apellido: ".$p_s_usuario_nya."<br>";
     echo "Usuario codigo perfil: ".$p_s_cd_perfil."<br>";
	 echo "Empresa Entidad: ".$p_s_entidad."<br>";
	 echo "Empresa Razon Social: ".$p_s_empresa_razonsocial."<br>";
	 echo "Usuario descripcion perfil: ".$p_s_tx_perfil."<br>";
	}
	 
function fks_format_reclamo($p_nu_anio,$p_cd_reclamo,$p_cd_empresa_prestadora) {
	$nu_reclamo = $p_nu_anio."-".str_repeat("0",6 - strlen($p_cd_reclamo)).$p_cd_reclamo."-".str_repeat("0",4 - strlen($p_cd_empresa_prestadora)).$p_cd_empresa_prestadora;
	return $nu_reclamo;
	}
	
function fks_format_entidad($p_cd_entidad){
	return str_repeat("0",6 - strlen($p_cd_entidad)).$p_cd_entidad;
	}
	
function fks_format_cliente($p_tx_nombre,$p_tx_apellido){
	if (strlen($p_tx_apellido) < 1)
		//es una empresa
		return $p_tx_nombre;
	else
		//es una persona
		return $p_tx_apellido." ".$p_tx_nombre;
	}
	
function fks_format_linea($p_i,$p_u,$p_l) {
	if (strlen($p_i) > 0)
		return $p_i."-".$p_u."-".$p_l;
	else 
		return "N/A";
	}
	
function fks_format_domicilio($p_calle,$p_numero,$p_piso,$p_depto,$p_cpostal,$p_localidad) {
	$domicilio = "CALLE: ".$p_calle." - NRO: ".$p_numero." - PISO: ";
	if (strlen($p_piso) > 0)
		$domicilio.= $p_piso." - UNIDAD: ";
	else 
		$domicilio.= " s/d - UNIDAD: ";
	if (strlen($p_depto) > 0)
		$domicilio.= $p_depto." - CP: ";
	else
		$domicilio.= " s/d - CP: ";
	$domicilio.= $p_cpostal." - LOC: ".$p_localidad;
	return $domicilio;
	}
	
function fks_format_validacion($p_fl_validacion) {
	if ($p_fl_validacion == null) {
		return "Pendiente";
		}
	else
		{
		if ($p_fl_validacion == 0)
			return "En desacuerdo";
		else
			return "De acuerdo";
		}
	}

function fks_format_aprobacion($p_fl_aprobacion) {
	if ($p_fl_aprobacion == null) {
		return "Pendiente";
		}
	else
		{
		if ($p_fl_validacion == 0)
			return "Rechazada";
		else
			return "Aprobada";
		}
	}

//recibe una fecha en formato aaaa-mm-dd y lo pasa a dd/mm/aaaa (para usar con registros de la base de datos que se quieren imprimir por pantalla)
function fks_format_date($p_fecha){
    ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})", $p_fecha, $fecha); 
    $r_fecha=$fecha[3]."/".$fecha[2]."/".substr($fecha[1],-2); 
    return $r_fecha;
	}

//recibe una fecha en formato aaaa-mm-dd hh:mm:ss y lo pasa a dd/mm/aaaa hh:mm:ss (para usar con registros de la base de datos que se quieren imprimir por pantalla)
function fks_format_date_hour($p_fecha){
    if (strlen($p_fecha) > 0) {
		ereg( "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})", substr($p_fecha,0,10), $fecha); 
    	$r_fecha=$fecha[3]."/".$fecha[2]."/".substr($fecha[1],-2); 
	    return $r_fecha." ".substr($p_fecha,-8);
		} else {
			return $p_fecha;
			}
	}

function fks_tablero_resultados($resultados) {
	/*
	esto devuelve el sp
	select t.cd_motivo, m.tx_motivo, t.fc_ingreso, t.cant
	from tmp t
	inner join motivo m on m.cd_motivo= t.cd_motivo
	order by m.tx_motivo, t.fc_ingreso;
	*/
	while($fila = dbh_fetch($resultados)) {
		$vec_fechas_aux[] = fks_format_date($fila["fc_ingreso"]);
		$vec_motivos_aux[] = $fila["tx_motivo"];
		}
	//vector con todas las fechas necesarias
	$vec_fechas = array_unique($vec_fechas_aux);
	$vec_motivos = array_unique($vec_motivos_aux);
	sort($vec_motivos); 
	?>
	<div align="center" class="inner_horvert">
    <table class="reg_tabla"><!--comienza la tabla de resultados-->
    	<tr><th class="reg_celda_encabezado">Motivo de Reclamo</th>
		<?php
		//por cada dia, imprimo el encabezado de la grilla
		foreach ($vec_fechas as $fecha) {?>
			<th class="reg_celda_encabezado"><?php echo substr($fecha,0,5);?></th>
			<?php
	        }
		?>
		</tr><!--termina la fila encabezado-->
		<?php
		//reseteo el vector con fechas
		reset($vec_fechas);
		//reseteo los resultados
		mysqli_data_seek($resultados,0);
		//leo el primer registro del resultado
		$fila = dbh_fetch($resultados);
		$fila_fecha = fks_format_date($fila["fc_ingreso"]);
		$f = "impar";
		foreach($vec_motivos as $motivo) {
			if ($f == "impar") {
				echo "<tr class='reg_celda_impar'><td>".$motivo."</td>";
				$f = "par";
				} else {
					echo "<tr class='reg_celda_par'><td>".$motivo."</td>";
					$f = "impar";			
					}
			foreach($vec_fechas as $fecha) {
				if ($fila_fecha == $fecha) {
					//imprimo el valor
					echo "<td>"/*.$fila["cant"]*/."valor</td>";
					//leo otro registro
					$vec_suma[$fecha] = $vec_suma[$fecha] + $fila["cant"];
					$fila = dbh_fetch($resultados);
					$fila_fecha = fks_format_date($fila["fc_ingreso"]);
					}
				else
					{
					//imprimo cero
					echo "<td>0</td>";
					}
				}//fin segundo foreach
				echo "</tr>";
			}//fin primer foreach
		//imprimo fila total
		?>
		<tr><th class="reg_celda_encabezado">Total por D&iacute;a</th>
        <?php
        foreach($vec_suma as $fila) {
			echo "<td class='reg_celda_encabezado'>".$fila."</td>";}?>
        </tr>
    </table>
    </div>
    <!-- formulario para exportar -->
    <form name="bajadas" method="post" action="exporta.php">
            <input type="hidden" name="sql" value="<?php echo $sql;?>" />
            <div class="formline">
            	<label class="wide" for="categorias">Exportar Tablero</label>
            	<input type="submit" name="tablero" value="tablero" />
        	</div>
            <div class="formline">
            	<label class="wide" for="subcategorias">Exportar Detalle</label>
            	<input type="submit" name="detalle" value="detalle" />
            </div>      
    </form>
	<?php
    }
	
function fks_quitar_acentos($text)
	{
	$text = htmlentities($text, ENT_QUOTES, 'UTF-8');
	$text = strtolower($text);
	$patron = array (
		// Espacios, puntos y comas por guion
		'/[\, ]+/' => '-',
		
		// Vocales
		'/&agrave;/' => 'a',
		'/&egrave;/' => 'e',
		'/&igrave;/' => 'i',
		'/&ograve;/' => 'o',
		'/&ugrave;/' => 'u',
		
		'/&aacute;/' => 'a',
		'/&eacute;/' => 'e',
		'/&iacute;/' => 'i',
		'/&oacute;/' => 'o',
		'/&uacute;/' => 'u',
		
		'/&acirc;/' => 'a',
		'/&ecirc;/' => 'e',
		'/&icirc;/' => 'i',
		'/&ocirc;/' => 'o',
		'/&ucirc;/' => 'u',
			
		'/&atilde;/' => 'a',
		'/&etilde;/' => 'e',
		'/&itilde;/' => 'i',
		'/&otilde;/' => 'o',
		'/&utilde;/' => 'u',
		
		'/&auml;/' => 'a',
		'/&euml;/' => 'e',
		'/&iuml;/' => 'i',
		'/&ouml;/' => 'o',
		'/&uuml;/' => 'u',
		
		'/&auml;/' => 'a',
		'/&euml;/' => 'e',
		'/&iuml;/' => 'i',
		'/&ouml;/' => 'o',
		'/&uuml;/' => 'u',
		
		// Otras letras y caracteres especiales
		'/&aring;/' => 'a',
		'/&ntilde;/' => 'n',

		// Agregar aqui mas caracteres si es necesario

		);
		
		$text = preg_replace(array_keys($patron),array_values($patron),$text);
		return $text;
	}	
?>
